home *** CD-ROM | disk | FTP | other *** search
- {
- > I'm looking For a turbo pascal routine that will wipe Files
- > off of disks the way (or similar to the way) that Norton's
- > Wipeinfo wipe's Files. I'd like the call to be something
- > like wipeFile(fn:String); Preferrably, I would also like
- > the deleted directory entry wiped to prevent one from seeing
- > what the File that used to be there was named, or how large
- > it was. Any help would greatly be appreciated.
-
- > Here is my wipe File. The directory entry is not cleared.
- Well, today an idea occured: clearing directory entries is not as
- difficult as I tought. No Assembler needed, no strange Dos calls, just
- plain TP. Here an updated version. Even the CIA won't get your Files
- back!
- }
-
- Procedure DosWipe(Path : PathStr);
- { wipes Files according to Department of Defense standard DOD 5220.22-M }
- Var
- DataFile : File;
- DirInfo : SearchRec;
-
- Procedure WipeFile(Var DataFile : File);
- Const
- NullByte : Byte = 0;
- FFByte : Byte = $FF;
- F6Byte : Byte = $F6;
- Var
- Result : Word;
- Count : Byte;
- Count2 : LongInt;
- begin
- Reset(DataFile, 1);
- For Count := 1 to 3 do
- begin
- Seek(DataFile,0);
- For Count2 := 0 to FileSize(DataFile) - 1 do
- BlockWrite(DataFile, FFByte, 1, result);
- Seek(DataFile,0);
- For Count2 := 0 to FileSize(DataFile) - 1 do
- BlockWrite(DataFile, NullByte, 1, result);
- end;
-
- Seek(DataFile, 0);
- For Count := 0 to FileSize(DataFile) - 1 do
- BlockWrite(DataFile, F6Byte, 1, result);
- Close(DataFile);
- end;
-
- Procedure ClearDirEntry;
- begin
- Reset(DataFile);
- Truncate(DataFile); { erase size entry }
- Close(DataFile);
- Rename(DataFile, 'TMP00000.$$$'); { erase name entry }
- end;
-
- Var
- D : DirStr;
- N : NameStr;
- E : ExtStr;
- begin
- FSplit(Path, D, N, E);
- FindFirst(Path, Archive, DirInfo);
-
- While DosError = 0 do
- begin
- Assign(DataFile, D+DirInfo.Name);
- WipeFile(DataFile);
- ClearDirEntry;
- Erase(DataFile);
- FindNext(DirInfo);
- end;
- end;
-